Применяется на уровне модуля для описания определяемого пользователем типа данных, который содержит один или несколько элементов.
[Private | Public] Type имяПеременной имяЭлемента [([индексы])] As тип [имяЭлемента [([индексы])] As тип] . . . End Type
Параметры
Public
Необязательный. Используется для описания
определяемых пользователем типов, которые доступны для всех процедур во всех
модулях всех проектов.
Private
Необязательный. Используется для
описания определяемых пользователем типов, которые доступны только в модуле, в
котором выполняется описание.
имяПеременной
Обязательный. Имя типа,
определяемого пользователем, удовлетворяющее правилам именования
переменных.
имяЭлемента
Обязательный. Имя элемента определяемого
пользователем типа. Имена элементов также должны соответствовать правилам
именования переменных, за исключением того, что для их задания разрешается
использовать ключевые слова.
индексы Необязательный. Размерности элемента,
являющегося массивом. Для задания массива, размеры которого могут изменяться,
указываются только скобки. Аргумент индексы использует следующий синтаксис:
[нижний To] верхний [,[нижний To] верхний] . . .Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю.
Замечания
Инструкция Type допускает использование только на уровне
модуля. После определения типа данных с помощью инструкции Type имеется
возможность в любом месте описать переменную этого типа в заданной области
определения. Для описания переменной определяемого пользователем типа
используются инструкции Dim, Private, Public, ReDim
или Static.
В стандартных модулях типы данных, определяемые
пользователем, по умолчанию являются общими. Видимость этих типов данных может
быть изменена с помощью ключевого слова Private. В модулях класса,
однако, типы данных, определяемые пользователем, могут быть только личными, и их
видимость не может быть изменена с помощью ключевого слова Public.
Не
допускается появление номеров строк и меток строк в блоках Type...End
Type.
Типы данных, определяемые пользователями, могут использоваться с
записями данных, которые часто состоят из набора связанных элементов различного
типа.
В следующем примере демонстрируется использование массивов
фиксированного размера в типах данных, определяемых пользователем:
Type StateData CityCode (1 To 100) As Integer ' Описывает статический массив. County As String * 30 End Type Dim Washington(1 To 100) As StateData
В предыдущем примере StateData включает статический массив
CityCode, а запись Washington имеет одинаковую со StateData
структуру.
При описании массива фиксированного размера с типом, определяемым
пользователем, его размерности должны описываться с помощью числовых литералов
или констант, а не с помощью переменных.
Значение, задаваемое в инструкции
Option Base, определяет нижнюю границу индексов для массивов,
содержащихся в типах данных, определяемых пользователем.
Пример
В данном примере инструкция Type используется для
определения типа данных. Инструкция Type используется только на уровне модуля.
При появлении в модуле класса инструкции Type должно предшествовать
ключевое слово Private.
Type EmployeeRecord ' Тип, определенный пользователем. ID As Integer ' Элементы типа данных. Name As String * 20 Address As String * 30 Phone As Long HireDate As Date End Type Sub CreateRecord() Dim MyRecord As EmployeeRecord ' Объявляет переменную. ' Присвоение значений элементам переменной EmployeeRecord ' должно выполняться в процедуре. MyRecord.ID = 12003 ' Присваивает значение элементу. End Sub